package com.hzit.rabbitmq.test;

import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

/**
 * 类名：
 * 作者：WF
 * 功能：
 */
@SpringBootTest
public class Producer01 {
	@Autowired
	RabbitTemplate rabbitTemplate;
	/**
	 * 1. 通过rabbitmq发送消息 (发送直连消息)
	 * 注意：
	 *   ① 使用direct直连模式发送消息，此时的routingkey与消息监听方的queue队列的名字保持一致！
	 */

	@Test
	public void test01(){
		rabbitTemplate.convertAndSend("hzit","正在使用direct方式发送消息！");
	}

	/**
	 * 2. 通过rabbitmq发送消息(发送fanout分裂消息)
	 * 特点： （广播模式）
	 *   只对exchange发消息，则与其绑定的其它的queue都会收到消息！
	 */
	@Test
	public void test02(){
		rabbitTemplate.convertAndSend("shenzhen-school","","各校区请注意：马上要放10.1假期了！");
	}


	/**
	 * 3. 通过rabbitmq发送消息（发送topic消息）
	 * 特点：
	 *   ① 只接受感兴趣的消息，这里，可以使用routingKey来定义发送的消息，在接受方就可以根据这个routingKey来接受对应的消息
	 */
	@Test
	public void test03(){
		rabbitTemplate.convertAndSend("fourbooks","goods.#","发送以goods开头的消息！");
	}
	@Test
	public void test04(){
		rabbitTemplate.convertAndSend("fourbooks","#.log","发送以log结尾的消息！");
	}
	@Test
	public void test05(){
		rabbitTemplate.convertAndSend("fourbooks","goods.log","发送以goods开头且以long结尾的消息！");
	}

}
